import greenfoot.*;
/**
 * @autor (Juarez Soto Luis Angel y Rangel Ramirez Juan Carlos) 
 * @versión (20/nov/2014)
 */

public class Nina extends Personaje
{
    private int velocidad; /*Velocidad del personaje nina*/
    private int vida; /*Cantidad de vidas del personaje Nina */
    private int contImage;
    private GreenfootImage[] arrImages;
    private String image;
    private SimpleTimer reloj;
    private int tiempoCorriendo;
    private MundoSano miMundo;
    /**El constructor de Nina asigna una velocidad de
     * 5 que hereda de la superclase Personaje, se agrego un arreglo
     * de imagenes en secuancia para aparentar que el personaje Nina
     * se esta moviento 
     */

    public Nina()
    { 
        super(5);        
        arrImages = new GreenfootImage [6];
        for(int i=0; i<=5; i++)
        {
            image="girl_run"+(i+1)+".png";
            arrImages[i]=new GreenfootImage(image);
        }
        contImage=0;
        reloj=new SimpleTimer();
        reloj.mark();
        tiempoCorriendo=500;
    }
    
    /**Realiza varias actividades como checar cuales objetos son los que
     * a tocado el peronaje Nino y deacuerdo a cada validacion
     * realiza diferentes acciones
     */
    public void act() 
    { 
        miMundo=(MundoSano)getWorld();
        if(tomoCerveza()==true){
            invertirDireccion();
        }
        else{
            super.correr();
            super.mover();
            if(reloj.millisElapsed()>=tiempoCorriendo)//las imagenes cambian cada cierto tiempo definido
            {             
                reloj.mark();
                simulaCorrer();//llamada a funcion para movimiento de jugador
            }  
            tiempoCorriendo=1000-miMundo.getSalud()*10;
        }   
        super.act();
    }   

    /**Verifica si es que el personaje tomo la Cerveza si es verdad
     * regresa un boolean true de lo contrario regresa un boolean 
     * false
     */

    public boolean tomoCerveza()
    {
        if(isTouching(Cerveza.class))
            return true;
        else 
            return false;
    }
    
    /**Metodo que es necesario para inverrir las direcciones del personaje 
     * depensiendo si es que tomo el objeto Cerveza
     */

    public void invertirDireccion()
    {
        int y = getY();
        if(Greenfoot.isKeyDown("right"))
            move(-5);
        if(Greenfoot.isKeyDown("left"))
            move(5);
        if(Greenfoot.isKeyDown("up"))
        {
            y = y + 5;
            setLocation(getX(),y);
        }
        if(Greenfoot.isKeyDown("down"))
        {
            y = y - 5;
            setLocation(getX(),y);   
        }
    }
    /**Metodo que simula el movimiento de la jugadora
     * las imagenes estan guardadas en un arreglo de imagenes
     */

    public void simulaCorrer()
    {
        this.setImage(arrImages[contImage]);
        if(contImage<5)
            contImage++;
        else
            contImage=0;
    }
}

